package br.com.vti.sisp_sicrim.antigo.controller.relatorios;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.util.Relatorios;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela
 * Scrp1650Report
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Scrp1650Report {
	private int jDataS;
	private String jMae;
	private String jNome;
	private String jPai;
	private String dataCorrente;
	private int jQuant;
	private Long registroEstadualGeral; // DB
	private String nroPagina;
	private String horaCorrente;
	private Result result;
	private Sessao sessao;
	private Relatorios report;
	// Classes views
	SicCadastro criminalView = new SicCadastro(); // Classes includes

	public Scrp1650Report() throws JRException, ParseException {
		inicializar();
	}

	public Scrp1650Report(Sessao sessao) throws JRException, ParseException {
		this.sessao = sessao;
		inicializar();
	}

	public void inicializar() throws JRException, ParseException {
		report = new Relatorios();
		jDataS = 0;
		jMae = "";
		jNome = "";
		jPai = "";
		jQuant = 0;
		dataCorrente = new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()); // *DATE
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
		report.setNumeroRel(1, "C");
		{
			report.setNumeroLinhaRel(1, 3);
			{
				report.adicionaCampo(1, 41, "lit_1_41", "C", "", "Secretaria de Justica e Seguranca Publica");
				report.adicionaCampo(109, 13, "lit_109_13", "C", "", "Data Emissao.");
				report.adicionaCampo(123, 10, "dataCorrente", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 3);
			{
				report.adicionaCampo(1, 61, "lit_1_61", "C", "", "PRODAMAR - Empresa de Processamento de Dados do Maranhao S.A.");
				report.adicionaCampo(109, 13, "lit_109_13", "C", "", "Hora Emissao.");
				report.adicionaCampo(123, 8, "horaCorrente", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(3, 2);
			{
				report.adicionaCampo(109, 15, "lit_109_15", "C", "", "Pagina.......  ");
				report.adicionaCampo(125, 5, "nroPagina", "S", "", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(6, 1);
			{
				report.adicionaCampo(50, 58, "lit_50_58", "C", "", "Relacao de Registros de Indice Criminal em Ordem Crescente");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(7, 1);
			{
				report.adicionaCampo(1, 1, "lit_1_1", "C", "", "-");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(2, "D");
		{
			report.setNumeroLinhaRel(1, 10);
			{
				report.adicionaCampo(0, 8, "lit_0_8", "C", "", "Registro");
				report.adicionaCampo(0, 13, "Registroestadualgeral", "N", "", "");
				report.adicionaCampo(0, 13, "lit_0_13", "C", "", "Nome Completo");
				report.adicionaCampo(0, 35, "Jnome", "X", "", "");
				report.adicionaCampo(0, 11, "lit_0_11", "C", "", "Nome do Pai");
				report.adicionaCampo(0, 30, "Jpai", "X", "", "");
				report.adicionaCampo(0, 11, "lit_0_11", "C", "", "Nome da Mae");
				report.adicionaCampo(0, 30, "Jmae", "X", "", "");
				report.adicionaCampo(0, 15, "lit_0_15", "C", "", "Data Nascimento");
				report.adicionaCampo(0, 8, "Jdatas", "N", "99/ZZ/ZZZ9", "");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(3, "D");
		{
			report.setNumeroLinhaRel(3, 1);
			{
				report.adicionaCampo(1, 1, "lit_1_1", "C", "", "-");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(4, 2);
			{
				report.adicionaCampo(45, 33, "lit_45_33", "C", "", "*** Total de Registros Lidos *** ");
				report.adicionaCampo(79, 6, "Jquant", "N", "ZZZ.ZZ9", "");
				report.setFimLinhaRel();
			}
		}
		setDataCorrente(dataCorrente);
		setHoraCorrente(horaCorrente);
	}

	public boolean validar() {
		// validar os campos recebidos da tela
		return true;
	}

	public int getJdatas() {
		return jDataS;
	}

	public void setJdatas(int jDataS) throws ParseException {
		this.jDataS = jDataS;
		report.adicionaValorReport("Jdatas", jDataS);
	}

	public String getJmae() {
		return jMae;
	}

	public void setJmae(String jMae) throws ParseException {
		this.jMae = jMae;
		report.adicionaValorReport("Jmae", jMae);
	}

	public String getJnome() {
		return jNome;
	}

	public void setJnome(String jNome) throws ParseException {
		this.jNome = jNome;
		report.adicionaValorReport("Jnome", jNome);
	}

	public String getJpai() {
		return jPai;
	}

	public void setJpai(String jPai) throws ParseException {
		this.jPai = jPai;
		report.adicionaValorReport("Jpai", jPai);
	}

	public int getJquant() {
		return jQuant;
	}

	public void setJquant(int jQuant) throws ParseException {
		this.jQuant = jQuant;
		report.adicionaValorReport("Jquant", jQuant);
	}

	public String getDataCorrente() {
		return dataCorrente;
	}

	public void setDataCorrente(String dataCorrente) throws ParseException {
		this.dataCorrente = dataCorrente;
		report.adicionaValorReport("dataCorrente", dataCorrente);
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) throws ParseException {
		this.horaCorrente = horaCorrente;
		report.adicionaValorReport("horaCorrente", horaCorrente);
	}

	public String getNroPagina() {
		return nroPagina;
	}

	public void setNroPagina(String nroPagina) throws ParseException {
		this.nroPagina = nroPagina;
		report.adicionaValorReport("nroPagina", nroPagina);
	}

	public void setPageSize(int pagesize) throws JRException {
		report.setPageSize(pagesize);
	}

	public void setLineSize(int linesize) {
		report.setLineSize(linesize);
	}

	public int getPageSize() {
		return report.getPageSize();
	}

	public int getPageLine() {
		return report.getPageLine();
	}

	public void saltaLinhas(int qtdLinhas) throws ParseException, JRException {
		report.saltaLinhas(qtdLinhas);
	}

	public void gravaRelatorio(int nroRel) throws ParseException, JRException {
		setNroPagina(String.valueOf(report.getPageNumber()));
		report.gravaRelatorio(report, nroRel, false);
	}

	public void imprimir() throws FileNotFoundException, JRException {
		report.imprimir();
	}

	public Long getRegistroEstadualGeral() {
		return registroEstadualGeral;
	}

	public void setRegistroEstadualGeral(Long registroEstadualGeral) throws ParseException {
		this.registroEstadualGeral = registroEstadualGeral;
		report.adicionaValorReport("registroEstadualGeral", registroEstadualGeral);
	}

}
